home *** CD-ROM | disk | FTP | other *** search
/ Trading on the Edge / Trading On The Edge - CD-ROM Toolkit (Wayzata Technology)(2031)(1994).bin / pc / mac_file / vendor_d / neuralwa / nw2v50 / uio_tran.h < prev    next >
Text File  |  1993-08-23  |  29KB  |  797 lines

  1. /* uio_tran.h */
  2. /************************************************************************
  3.  * Copyright(C) 1987-1992 NeuralWare Inc                                *
  4.  * Penn Center West, IV-227, Pittsburgh, PA 15276                       *
  5.  * Telephone: (412) 787-8222    FAX: (412) 787-8220                     *
  6.  *                                                                      *
  7.  * All rights reserved.  No part of this program may be reproduced,     *
  8.  * stored in a retrieval system, or transmitted, in any form or by any  *
  9.  * means, electronic, mechanical, photocopying, recording or otherwise  *
  10.  * without the prior written permission of the copyright owner,         *
  11.  * NeuralWare, Inc.                                                     *
  12.  *                                                                      *
  13.  *                          PROPRIETARY NOTICE                          *
  14.  *                                                                      *
  15.  * This document is the property of NeuralWare, Inc. and contains       *
  16.  * trade-secrets and other proprietary information.  The information    *
  17.  * herein is reserved as proprietary to NeuralWare, and is not to be    *
  18.  * published, reproduced, copied, disclosed, used, or reverse           *
  19.  * engineered without the express written consent of a duly authorized  *
  20.  * representative of NeuralWare.                                        *
  21.  ************************************************************************
  22.  */
  23.  
  24. /*********************************************************************/
  25. /*                                                                   */
  26. /*    uio_tran.h - description of TRANSFER buffer and all structures */
  27. /*                 and data types unique to it.                      */
  28. /*    Author: John C. Fairman           September 4, 1990            */
  29. /*    Copyright 1990 by NeuralWare Inc.                              */
  30. /*                                                                   */
  31. /*    $Author   :  $                                                 */
  32. /*    $Date     :  $                                                 */
  33. /*    $Source   :  $                                                 */
  34. /*    $Revision :  $                                                 */
  35. /*    $Log      :  $                                                 */
  36. /*                                                                   */
  37. /*********************************************************************/
  38.  
  39. #ifndef UIO_TRAN_H
  40. #define UIO_TRAN_H 1
  41.  
  42. #ifndef UIO_STRC_H
  43. #include "uio_strc.h"
  44. #endif
  45.  
  46. /* Usual configuration */
  47. #define BUFFER_SHORT  short
  48. #define BUFFER_USHORT unsigned short
  49. #if 1
  50. #define BUFFER_INT    long
  51. #define BUFFER_UINT   unsigned long
  52. #else
  53. #define BUFFER_INT    int
  54. #define BUFFER_UINT   unsigned int
  55. #endif
  56. #define BUFFER_LONG   long
  57. #define BUFFER_ULONG  unsigned long
  58. #define BUFFER_REAL   float
  59. #define BUFFER_DOUBLE double
  60. #define BUFFER_CHAR   char
  61. #define BUFFER_UCHAR  unsigned char
  62. #define BUFFER_PROC   void *
  63. #define BUFFER_ADDR   void *
  64.  
  65.  
  66. #if !defined(EMULATING) && !defined(LINKING)
  67. #define TWO_DTB_MODEL              1
  68. #endif
  69.  
  70. #define HOSTPRIMS_EQ_BUFFERPRIMS   1
  71. #define SERVPRIMS_EQ_BUFFERPRIMS   1
  72.  
  73. /* Differences between model and usual configuration */
  74. #if defined(IBP) || defined (I860) || defined (IBM)
  75. /* use interrupt vectors allocated for BASIC */
  76. #define GVEC 0x85 /* it will never be running with NW2 !! */
  77. #undef  SERVPRIMS_EQ_BUFFERPRIMS
  78. #define SERVPRIMS_EQ_BUFFERPRIMS   0
  79. #undef  HOSTPRIMS_EQ_BUFFERPRIMS
  80. #define HOSTPRIMS_EQ_BUFFERPRIMS   0
  81.  
  82. #undef  BUFFER_INT
  83. #define BUFFER_INT    long
  84. #undef  BUFFER_UINT
  85. #define BUFFER_UINT   unsigned long
  86. #if !defined (I860)
  87. #undef TWO_DTB_MODEL
  88. #define ONE_DTB_MODEL   1
  89. #endif /* ! I860 */
  90. #endif /* IBP || I860 || IBM */
  91.  
  92.  
  93. #ifdef MAC
  94. #if !defined(EMULATING) && !defined(LINKING)
  95. #undef TWO_DTB_MODEL
  96. #define ONE_DTB_MODEL
  97. #endif
  98. #undef BUFFER_DOUBLE
  99. #define BUFFER_DOUBLE long double
  100. #if !defined(MPW3) && !defined(AUX)
  101. #undef SERVPRIMS_EQ_BUFFERPRIMS
  102. #define SERVPRIMS_EQ_BUFFERPRIMS   0
  103. #undef BUFFER_INT
  104. #define BUFFER_INT    long    /* Must be 32 bit */
  105. #undef BUFFER_UINT
  106. #define BUFFER_UINT   unsigned long /* Must be 32 bit */
  107. #endif /* !MPW && !AUX */
  108. #endif /* MAC */
  109.  
  110.  
  111. /* */
  112. /*******************************************************************/
  113. /*                                                                 */
  114. /*  Graphic Interface Data-structures & Defines                    */
  115. /*                                                                 */
  116. /*******************************************************************/
  117.  
  118. typedef BUFFER_REAL       DATA_T;
  119. typedef BUFFER_ULONG      D_OFFSET;
  120. #define DATA_TYPE         REAL_32_TYPE
  121. #define HOST_PROCESS_ID   0x0
  122. #define MAX_UIO_STRING    256
  123. #define MAX_CN_VALS      1000
  124. #if defined(VMS)
  125. #define MAX_BLIT_BYTES    7500    /* hedge to keep mail at ~'8K' with overhead */
  126. #else
  127. #define MAX_BLIT_BYTES    8192
  128. #endif
  129. #define MAX_FORMAT_CHARS  256
  130.  
  131. #if (HOSTPRIMS_EQ_BUFFERPRIMS) && (SERVPRIMS_EQ_BUFFERPRIMS)
  132. #define MAX_FORMAT_ARGS   20
  133. #define FMT_ARGS_TYPE     BUFFER_ULONG
  134. #else
  135. #define MAX_FORMAT_ARGS   1024
  136. #define FMT_ARGS_TYPE     BUFFER_CHAR
  137. #endif
  138.  
  139. typedef struct {
  140.    BUFFER_UINT  ag_msgl;               /* message length */
  141.    BUFFER_UINT  ag_msgdir;             /* 0=read; 1=write */
  142.    BUFFER_CHAR  ag_msg[MAX_UIO_STRING];/* message */
  143. } ARGMSG;
  144.  
  145. typedef struct {
  146.    BUFFER_UINT  ag_mode;               /* save mode */
  147.    BUFFER_INT   unused;
  148.    BUFFER_CHAR  ag_NetN[MAX_UIO_STRING];/* network name */
  149. } ARGN;
  150.  
  151. typedef struct {                        /* window */
  152.    BUFFER_UINT  ag_winn;               /* window number */
  153.    BUFFER_UINT  ag_color;              /* window color */
  154.    BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  155.    BUFFER_UINT  ag_x1, ag_y1;          /* top right */
  156. } ARG1;
  157.  
  158. typedef struct {                        /* line, point, box */
  159.    BUFFER_UINT  ag_winn;               /* window number */
  160.    BUFFER_UINT  ag_color;              /* color */
  161.    BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  162.    BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  163.    BUFFER_UINT  ag_x1, ag_y1;          /* end-point */
  164.    BUFFER_UINT  ag_style;              /* line style */
  165. } ARG2;
  166.  
  167. typedef struct {                        /* put string */
  168.    BUFFER_UINT  ag_winn;               /* window number */
  169.    BUFFER_UINT  ag_color;              /* color */
  170.    BUFFER_UINT  ag_mode;               /* mode */
  171.    BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  172.    BUFFER_UINT  ag_rot;                /* rotation */
  173.    BUFFER_CHAR  ag_sp[MAX_UIO_STRING]; /* string itself */
  174. } ARG4;
  175.  
  176. /* */
  177. typedef struct {
  178.    BUFFER_UINT  ag_winn;               /* window number */
  179.    BUFFER_UINT  ag_x0, ag_y0;          /* point to read */
  180.    BUFFER_UINT  unused;
  181. } ARG3;
  182.  
  183. typedef struct {
  184.    BUFFER_UINT    pr_mode;             /* prune mode */
  185.    BUFFER_UINT    unused;
  186.    BUFFER_DOUBLE  pr_thresh;           /* prune threshold */
  187.    BUFFER_DOUBLE  pr_prob;             /* prune probability */
  188.    BUFFER_DOUBLE  pr_wtmax;            /* maximum weight */
  189. } ARGPRUNE;
  190.  
  191. typedef struct {
  192.    BUFFER_UINT  ag_winn;               /* window number */
  193.    BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  194.    BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  195.    BUFFER_UINT  ag_x_exp, ag_y_exp;    /* expansion factors */
  196.    BUFFER_UINT  ag_x_size, ag_y_size;  /* size of data      */
  197.    BUFFER_CHAR  ag_blit_bytes[MAX_BLIT_BYTES]; /* offset to blit data */
  198. } ARGBLIT;
  199.  
  200. typedef struct {
  201.    BUFFER_UINT  ag_winn;               /* window number */
  202.    BUFFER_UINT  ag_color;              /* color of blit area */
  203.    BUFFER_UINT  ag_mode;               /* mode 0=set, 1=xor */
  204.    BUFFER_UINT  ag_x0, ag_y0;          /* origin */
  205.    BUFFER_UINT  ag_x_size, ag_y_size;  /* size of data      */
  206.    BUFFER_UINT  ag_rot;                /* rotation */
  207.    BUFFER_CHAR  ag_blit_bytes[MAX_BLIT_BYTES]; /* offset to blit data */
  208. } ARGPBLIT;
  209.  
  210. typedef struct {
  211.    BUFFER_REAL  ape_I;                 /* sum */
  212.    BUFFER_REAL  ape_Tran;              /* tran */
  213.    BUFFER_REAL  ape_Output;            /* output */
  214.    BUFFER_REAL  ape_Err;               /* error */
  215.    BUFFER_REAL  ape_CumErr;            /* cumulative error */
  216.    BUFFER_UINT  ape_Flags;             /* flags */
  217.    BUFFER_UINT  unused;
  218. } APE_BUF;
  219.  
  220. typedef struct {
  221.    BUFFER_LONG  asc_recall;            /* recall counter */
  222.    BUFFER_REAL  asc_rcl[10];           /* recall data */
  223.    BUFFER_LONG  asc_learn;             /* learn counter */
  224.    BUFFER_REAL  asc_lrn[10];           /* learn data */
  225. } ASCOL_BUF;
  226.  
  227. typedef struct {
  228.    BUFFER_CHAR  asc_nam[16];           /* schedule name */
  229.    ASCOL_BUF    asc_col[5];            /* data columns */
  230. } ASCHED_BUF;
  231.  
  232. typedef struct {
  233.    BUFFER_UINT  start_in;
  234.    BUFFER_UINT  start_out;
  235.    BUFFER_REAL  min_in;
  236.    BUFFER_REAL  max_in;
  237.    BUFFER_REAL  min_out;
  238.    BUFFER_REAL  max_out;
  239. } IOPARMS_BUF;
  240.  
  241.  
  242. typedef struct {
  243.    BUFFER_UINT  num_pes;
  244.    BUFFER_UINT  n_wt_flds;
  245.    BUFFER_UINT  sum_f;
  246.    BUFFER_UINT  tran_f;
  247.    BUFFER_UINT  output_f;
  248.    BUFFER_UINT  learn_f;
  249.    BUFFER_UINT  error_f;
  250.    BUFFER_UINT  noise_f;
  251.    /* The following are the only ones that can be written to */
  252.    BUFFER_REAL  scale;
  253.    BUFFER_REAL  offst;
  254.    BUFFER_REAL  fprm_offst;
  255.    BUFFER_REAL  low_init;
  256.    BUFFER_REAL  high_init;
  257.    BUFFER_REAL  unused;
  258. } ALYR_BUF;
  259.  
  260. /* */
  261. typedef struct {
  262.    BUFFER_UINT  ag_rwf;                /* read=0; write=1 */
  263.    BUFFER_UINT  ag_layern;             /* layer number */
  264.    BUFFER_UINT  ag_pen;                /* PE within layer */
  265.    BUFFER_UINT  unused;
  266.    union {                             /* data itself */
  267.       APE_BUF      ag_pe;
  268.       ASCHED_BUF   ag_sched;
  269.       IOPARMS_BUF  ioparms_buf;
  270.       BUFFER_LONG  ag_ctr[8];
  271.       ALYR_BUF     ag_lyr;
  272.    } ag_rdata;
  273. } ARGPSCIO;
  274.  
  275. typedef struct {
  276.    BUFFER_LONG  ag_count;              /* learn / recall count */
  277. } ARGLR;
  278.  
  279. typedef struct {
  280.    BUFFER_UINT  xsize;
  281.    BUFFER_UINT  ysize;
  282.    BUFFER_UINT  ncolor;
  283.    BUFFER_UINT  chrx;
  284.    BUFFER_UINT  chry;
  285.    BUFFER_UINT  unused;
  286. } AGPARMS;
  287.  
  288. typedef struct {
  289.    BUFFER_UINT  key;
  290.    BUFFER_UINT  xloc;
  291.    BUFFER_UINT  yloc;
  292.    BUFFER_UINT  buttonstates;
  293. } AMOUSE;
  294.  
  295. typedef struct {
  296.    BUFFER_UINT  nlay;
  297.    BUFFER_UINT  nin;
  298.    BUFFER_UINT  nout;
  299.    BUFFER_UINT  ltype;
  300.    BUFFER_CHAR  cs[FNALC];
  301.    /* FIX_LATER */
  302.    BUFFER_CHAR  netn[FNALC];
  303. } ARDNETINF;
  304.  
  305. typedef struct {
  306.    BUFFER_UINT  process_id;
  307.    BUFFER_UINT  unused;
  308.    BUFFER_CHAR  filename[FNALC];
  309. } INITCMD;
  310.  
  311. #ifdef MAC
  312. typedef struct {
  313.    BUFFER_UINT  szof_uio_dbl;
  314.    BUFFER_PROC  Receive_request;
  315.    BUFFER_PROC  stdio_funcs[MIO_MAX];
  316. } CREATECMD;
  317. #endif
  318.  
  319.  
  320. typedef struct {
  321.    BUFFER_UINT  layn;
  322.    BUFFER_UINT  npes;
  323. } DATACMD;
  324.  
  325. typedef struct {
  326.    BUFFER_UINT  instrument_id;
  327.    BUFFER_UINT  ndataelems;
  328. } INSTRUMENTCMD;
  329.  
  330. typedef struct {
  331.    BUFFER_INT  eoeflag;    /* End of Epoch flag: 0=start, 1=end */
  332. } OBJFUNCCMD;
  333.  
  334. typedef struct {
  335.    BUFFER_UINT  ndataelems;
  336. } WRITEVECTORCMD;
  337.  
  338. /* */
  339. typedef struct {
  340.    FMT_ARGS_TYPE format_args[MAX_FORMAT_ARGS];
  341.    BUFFER_CHAR   format[MAX_FORMAT_CHARS];
  342. } ARGFMT;
  343.  
  344. /* CCK: use longs (here & PRSTATS to make it universal across
  345.    all platforms. */
  346. typedef struct {
  347.    BUFFER_LONG  PRNwts;
  348.    BUFFER_REAL  PRMin;
  349.    BUFFER_REAL  PRMax;
  350.    BUFFER_REAL  PRSum;
  351.    BUFFER_REAL  PRAverage;
  352.    BUFFER_REAL  PRMedian;
  353.    BUFFER_LONG  PRHist[NPHIST];
  354.    BUFFER_REAL  PRMinA;
  355.    BUFFER_REAL  PRMaxA;
  356.    BUFFER_REAL  PRSumA;
  357.    BUFFER_REAL  PRAverageA;
  358.    BUFFER_REAL  PRMedianA;
  359.    BUFFER_LONG  PRHistA[NPHIST];
  360. } PRSTATS_BUF;
  361.  
  362. typedef struct {
  363.    BUFFER_UINT  layern;              /* destination layer number */
  364.    BUFFER_UINT  pen;                 /* PE number in dest. layer */
  365.    BUFFER_UINT  slayern;             /* Source layer number */
  366.    BUFFER_UINT  spen;                /* Start PE in source layer */
  367.    BUFFER_UINT  n_cn_vals;           /* Number of connection values */
  368.    BUFFER_UINT  var_idx;             /* Index into connection structure */
  369.    /* 0=flag, 1=weight, 2=delta weight, ... */
  370.    BUFFER_UINT  rwf;                 /* Read/Write flag */
  371.    BUFFER_REAL  cn_vals[MAX_CN_VALS]; /* Connection data */
  372. } ARGCNIO;
  373.  
  374. typedef struct {
  375.    BUFFER_CHAR  fname[FNALC];        /* File name */
  376.    BUFFER_UINT  lrf;                 /* Learn/Recall flag */
  377.    BUFFER_UINT  binf;                /* binary flag */
  378.    BUFFER_UINT  rndf;                /* Randomization flag */
  379.    BUFFER_UINT  ldf;                 /* Load flag */
  380. } ARGFILEIO;
  381.  
  382. typedef struct {
  383.    BUFFER_CHAR  iofilen[FNALC];      /* I/O File name */
  384.    BUFFER_UINT  lrf;                 /* Learn/Recall flag */
  385.    BUFFER_LONG  n_recs;              /* Number of records in the file */
  386. } ARDFILEINF;
  387.  
  388. typedef struct {
  389.    BUFFER_LONG  svb_lcnt;             /* learn count */
  390.    BUFFER_LONG  svb_tint;             /* test interval */
  391.    BUFFER_LONG  svb_nret;             /* # retries */
  392.    BUFFER_UINT  svb_logf;             /* log flag */
  393.    BUFFER_CHAR  svb_fn[FNALC];        /* file name */
  394.    BUFFER_UINT  svb_prfl;             /* prune flag */
  395.    BUFFER_UINT  svb_prmx;             /* max units to prune */
  396.    BUFFER_REAL  svb_prtol;            /* pruning tolerance */
  397. } ASAVEBEST;
  398.    
  399. typedef struct {
  400.    BUFFER_UINT  max_nd;                /* Max number of hid PEs to train for */
  401.    BUFFER_UINT  n_cand;                /* Number of candidates per node  */
  402.    BUFFER_UINT  v_max;                 /* Max dimension of candidate vector */
  403.    BUFFER_UINT  ret_f;                 /* =1: Retrain tenured PEs */
  404.    BUFFER_UINT  stb_maxepoch;          /* Max # epochs per candidate */
  405.    BUFFER_UINT  stb_patience;          /* Number epochs must be stable */
  406.    BUFFER_REAL  stb_rmsetol;           /* RMS error stability tolerance */
  407. } ACCLRN;
  408.    
  409. typedef struct {
  410.    BUFFER_LONG  seed;                 /* log flag */
  411. } ARANDSEED;
  412.    
  413.  
  414. typedef struct _data_desc_t {
  415.    BUFFER_INT   num_elements;          /* 1 if scalar */
  416.    BUFFER_INT   data_type;
  417.    /************************* READ THIS *********************************/
  418.    BUFFER_INT   unused;            /* This is here to coincide
  419.                                       with I860 alignment of doubles
  420.                                       on 8 byte boundaries.  If this
  421.                                       were not here, the RPC_area
  422.                                       field which occurs after the
  423.                                       data_descriptor field in the
  424.                                       DATA_TRANSFER_AREA structure
  425.                                       would align on an eight byte
  426.                                       boundary due to the inclusion
  427.                                       of a double within the union in
  428.                                       the RPC_area. */
  429.    /*********************************************************************/
  430. #define NO_DATA_TYPE  0x0010
  431. #define INT_8_TYPE    0x0010            /* Legal data types          */
  432. #define UINT_8_TYPE   0x0110            /* The derivation from the   */
  433. #define INT_16_TYPE   0x0020            /* bit assignments are as    */
  434. #define UINT_16_TYPE  0x0120            /* follows                   */
  435. #define INT_32_TYPE   0x0040            /*     bit 0-3 -> # of bits  */
  436. #define UINT_32_TYPE  0x0140            /*     bit 4-7 -> # of bytes */
  437. #define REAL_32_TYPE  0x0440            /*     bit 8 -> unsigned     */
  438. #define REAL_64_TYPE  0x0480            /*     bit 9 -> char         */
  439. #define CHAR_8_TYPE   0x0210            /*     bit 10 -> float       */
  440. #define UCHAR_8_TYPE  0x0310            /*     bit 11-15 -> unused   */
  441. #define TEXT_TYPE     0x0210
  442. } DATA_DESC_T;
  443.  
  444. /* */
  445. typedef union {
  446.    ARGMSG          argmsg;
  447.    ARGN            argn;
  448.    APE             ape;
  449.    ASCOL           ascol;
  450.    ASCHED          asched;
  451.    ALYR            alyr;
  452.    ARG1            arg1;
  453.    ARG2            arg2;
  454.    ARG3            arg3;
  455.    ARG4            arg4;
  456.    ARGBLIT         argblit;
  457.    ARGLR           arglr;
  458.    ARGPBLIT        argpblit;
  459.    ARGPRUNE        argprune;
  460.    ARGPSCIO        argpscio;
  461.    AGPARMS         agparms;
  462.    AMOUSE          amouse;
  463.    ARDNETINF       ardnetinf;
  464.    DATACMD         datacmd;
  465.    INSTRUMENTCMD   instrumentcmd;
  466.    OBJFUNCCMD      objfunccmd;
  467.    WRITEVECTORCMD  writevectorcmd;
  468.    INITCMD         initcmd;
  469. #ifdef MAC
  470.    CREATECMD       createcmd;
  471. #endif
  472.    ARGFMT          argfmt;
  473.    PRSTATS_BUF     prstats_buf;
  474.    ARGCNIO         argcnio;
  475.    ARGFILEIO       argfileio;
  476.    ARDFILEINF      ardfileinf;
  477.    ASAVEBEST       asavebest;
  478.    ARANDSEED       arandseed;
  479.    ACCLRN          acclrn;
  480. } ALL_ARG_LISTS_T;
  481.  
  482. typedef struct {
  483.    BUFFER_INT   process_from_id;
  484.    BUFFER_INT   process_to_id;
  485.    BUFFER_INT   unused;         /* For future expans. and alignment */
  486. #define REQ_STATUS_NONE       0x00
  487. #define REQ_STATUS_STARTED    0x01
  488. #define REQ_STATUS_COMPLETE   0x02
  489.    BUFFER_INT   request;
  490. #define CMD_CREATE            0xff      /* Never use this in DTB */
  491. #define CMD_NONE              0x00      /* This command cannot be sent */
  492. #define CMD_WAIT              0x01      /* The commands which can be sent */
  493. #define CMD_ACKNOWLEDGE       0x02
  494. #define CMD_INIT              0x03
  495. #define CMD_TERM              0x04
  496. #define CMD_ATTENTION         0x05
  497. #define CMD_LEARN_START       0x06
  498. #define CMD_LEARN_INPUT       0x07
  499. #define CMD_LEARN_OUTPUT      0x08
  500. #define CMD_LEARN_RESULT      0x09
  501. #define CMD_LEARN_END         0x0A
  502. #define CMD_RECALL_START      0x0B
  503. #define CMD_READ              0x0C
  504. #define CMD_WRITE             0x0D
  505. #define CMD_WRITE_STEP        0x0E
  506. #define CMD_RECALL_TEST       0x0F
  507. #define CMD_RECALL_END        0x10
  508. #define CMD_INSTRUMENT        0x11
  509. #define CMD_WRITE_VECTOR      0x12
  510. #define CMD_UNINSTALL         0x13       /* Uninstall never use this in DTB */
  511. #define CMD_REWIND            0x14
  512. #define CMD_EXPLAIN           0x15
  513. #define CMD_OBJFUNC           0x16
  514.    
  515.    /* */
  516. #define REQ_NONE              0x20       /* This request cannot be received */
  517. #define REQ_WAIT              0x21      /* The requests which can be handled */
  518. #define REQ_ACKNOWLEDGE       0x22
  519. #define REQ_GETSTR            0x23
  520. #define REQ_PUTSTR            0x24
  521. #define REQ_PUTFMT            0x25
  522. #define REQ_SAVENET           0x26
  523. #define REQ_UG_WINDOW         0x27
  524. #define REQ_UG_LINE           0x28
  525. #define REQ_UG_POINT          0x29
  526. #define REQ_UG_BOX            0x2A
  527. #define REQ_UG_BOXF           0x2B
  528. #define REQ_UG_PUTS           0x2C
  529. #define REQ_UG_WINDEL         0x2D
  530. #define REQ_UG_WINCLR         0x2E
  531. #define REQ_UG_GPARMS         0x2F
  532. #define REQ_UG_MOUSE          0x30
  533. #define REQ_UG_RDPOINT        0x31
  534. #define REQ_UG_RDNETINF       0x32
  535. #define REQ_UG_GETINSTRT      0x33
  536. #define REQ_UG_LOADNET        0x34
  537. #define REQ_UG_LEARN          0x35
  538. #define REQ_UG_RECALL         0x36
  539. #define REQ_UG_MSGIO          0x37
  540. #define REQ_UG_WTSTATS        0x38
  541. #define REQ_UG_PRUNE          0x39
  542. #define REQ_UG_BLIT           0x3A
  543. #define REQ_UG_PBLIT          0x3B
  544. #define REQ_UG_PEIO           0x3C
  545. #define REQ_UG_SCHDIO         0x3D
  546. #define REQ_UG_CTRIO          0x3E
  547. #define REQ_UG_IOPARMS        0x3F
  548. #define REQ_UG_CNIO           0x40
  549. #define REQ_UG_TEST           0x41
  550. #define REQ_UG_FILEIO         0x42
  551. #define REQ_UG_NETINIT        0x43
  552. #define REQ_UG_CIRCLE         0x44
  553. #define REQ_UG_LYRIO          0x45
  554. #define REQ_UG_RDFILEINF      0x46
  555. #define REQ_UG_SAVEBEST       0x47
  556. #define REQ_UG_RANDSEED       0x48
  557. #define REQ_UG_CCLRN          0x49
  558.    
  559.    /* The UIO_errors go here  0x80 -> 0xBF */
  560.    
  561.    union {
  562.       BUFFER_SHORT    buffer_short;
  563.       BUFFER_USHORT   buffer_ushort;
  564.       BUFFER_INT      buffer_int;
  565.       BUFFER_UINT     buffer_uint;
  566.       BUFFER_LONG     buffer_long;
  567.       BUFFER_ULONG    buffer_ulong;
  568.       BUFFER_REAL     buffer_real;
  569.       BUFFER_DOUBLE   buffer_double;
  570.       BUFFER_CHAR     buffer_char;
  571.       BUFFER_UCHAR    buffer_uchar;
  572.    } return_value;
  573.    BUFFER_INT      unused2[2];         /* For future expans. and alignment */
  574.    ALL_ARG_LISTS_T all_arg_lists;
  575. } RPC_AREA_T;
  576.  
  577. #ifdef UNIX
  578. #ifdef VMS
  579. #define MAX_TRANSFER_UNITS 1000        /* VMS - keep it below 64K bytes! */
  580. #define MAXMBOX    8192
  581. #else
  582. #define MAX_TRANSFER_UNITS 20000    /* UNIX - huge */
  583. #endif
  584. #else
  585. #define MAX_TRANSFER_UNITS 5000        /* all others */
  586. #endif
  587.  
  588. #define SIZE_OF_UIO_BUFFER      (sizeof(DATA_T) * MAX_TRANSFER_UNITS)
  589.  
  590. typedef struct _data_area_t {
  591.    BUFFER_INT   unused[4];
  592.    DATA_T       data[MAX_TRANSFER_UNITS];
  593. } DATA_AREA_T;
  594.  
  595. /* */
  596.  
  597. typedef struct _data_transfer_area_t {
  598.    D_OFFSET       data_offset;  /* # of bytes from buffer beginning */
  599.    BUFFER_INT   unused[4];
  600.    DATA_DESC_T  data_descriptor; /* type of data */
  601.    /* The data descriptor is here to   */
  602.    /* ensure host/server compatibility */
  603.    /* and allow for future portability */
  604.    /* and userio across dispergent     */
  605.    /* architectures. */
  606.    RPC_AREA_T   RPC_area;     /* area used to pass arguments */
  607.    DATA_AREA_T  data_area;    /* area used to transfer data */
  608. } DATA_TRANSFER_AREA_T;
  609.  
  610. #define STANDARD_SIZE (sizeof(DATA_TRANSFER_AREA_T) - sizeof(DATA_AREA_T) - sizeof(ALL_ARG_LISTS_T))
  611.  
  612. #define MAX_REQ_SIZE (sizeof(DATA_TRANSFER_AREA_T) - sizeof(DATA_AREA_T))
  613.  
  614. typedef struct _request_data_t {
  615.    BUFFER_INT   response;
  616.    BUFFER_INT   i_or_o;
  617.    BUFFER_INT   num_bytes_out;
  618.    BUFFER_INT   num_bytes_back;
  619. #define NON_IO_REQ   0x0
  620. #define INPUT_REQ    0x1
  621. #define OUTPUT_REQ   0x2
  622. } REQUEST_DATA_T;
  623.  
  624. /* */
  625. #ifdef HOME_FOR_TRANSFER_DATA
  626. /* NOTE: these global variables are */
  627. /* initialized here to force them into */
  628. /* the default data segment (Microsoft) */
  629. /* their values can then be verified */
  630. /* through a window mapped onto the */
  631. /* user I/O data segment from inside */
  632. /* NWORKS (OSx86 versions) */
  633. GLOBALDEF DATA_TRANSFER_AREA_T *Data_transfer_ptr = {NULL};
  634.  
  635. GLOBALDEF NINT Process_id = {-1};
  636.  
  637. #if !defined(UIO_SERVER) || !defined(EMULATING)
  638.  
  639. GLOBALDEF REQUEST_DATA_T command_data_table[74] = {
  640.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_NONE  0x00 */
  641.    /* The commands which can be sent */
  642.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_WAIT */
  643.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_ACKNOWLEDGE */
  644.    { REQ_ACKNOWLEDGE, NON_IO_REQ,
  645.         sizeof(INITCMD), 0},                     /* CMD_INIT */
  646.    { REQ_ACKNOWLEDGE, NON_IO_REQ,
  647.         sizeof(INITCMD), 0},                     /* CMD_TERM */
  648.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_ATTENTION */
  649.    
  650.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_LEARN_START */
  651.    { REQ_ACKNOWLEDGE, INPUT_REQ,
  652.         sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_LEARN_INPUT */
  653.    { REQ_ACKNOWLEDGE, INPUT_REQ,
  654.         sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_LEARN_OUTPUT */
  655.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  656.         sizeof(DATACMD), 0},                     /* CMD_LEARN_RESULT */
  657.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_LEARN_END  */
  658.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL_START */
  659.    { REQ_ACKNOWLEDGE, INPUT_REQ,
  660.         sizeof(DATACMD), sizeof(DATACMD)},       /* CMD_READ */
  661.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  662.         sizeof(DATACMD), 0},                     /* CMD_WRITE */
  663.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  664.         sizeof(DATACMD), 0},                     /* CMD_WRITE_STEP */
  665.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  666.         sizeof(DATACMD), 0},                     /* CMD_RECALL_TEST */
  667.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL_END 0x10 */
  668.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  669.         sizeof(INSTRUMENTCMD), 0},               /* CMD_INSTRUMENT */
  670.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  671.         sizeof(WRITEVECTORCMD), 0},              /* CMD_WRITE_VECTOR */
  672.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_UNINSTALL */
  673.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* CMD_RECALL */
  674.    { REQ_ACKNOWLEDGE, OUTPUT_REQ,
  675.         sizeof(DATACMD), 0},                     /* CMD_EXPLAIN */
  676.    { REQ_ACKNOWLEDGE, INPUT_REQ,
  677.         sizeof(OBJFUNCCMD), sizeof(OBJFUNCCMD)},  /* CMD_OBJFUNC */
  678.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  679.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  680.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  681.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  682.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  683.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  684.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  685.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  686.    { REQ_ACKNOWLEDGE, NON_IO_REQ, 0, 0},      /* RESERVED */
  687.    /* */
  688.    { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_NONE 0x20 */
  689.    /* The requests which can be received */
  690.    { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_WAIT */
  691.    { CMD_NONE,        NON_IO_REQ, 0, 0},      /* REQ_ACKNOWLEDGE */
  692.    { CMD_NONE,        NON_IO_REQ,
  693.         0, sizeof(ARGMSG)},                      /* REQ_GETSTR */
  694.    { CMD_NONE,        NON_IO_REQ,
  695.         sizeof(ARGMSG), 0},                      /* REQ_PUTSTR */
  696.    { CMD_NONE,        NON_IO_REQ,
  697.         sizeof(ARGFMT), 0},                      /* REQ_PUTFMT */
  698.    { CMD_NONE,        NON_IO_REQ,
  699.         sizeof(ARGN), 0},                        /* REQ_SAVENET */
  700.    { CMD_NONE,        NON_IO_REQ,
  701.         sizeof(ARG1), 0},                        /* REQ_UG_WINDOW */
  702.    { CMD_NONE,        NON_IO_REQ,
  703.         sizeof(ARG2), 0},                        /* REQ_UG_LINE */
  704.    { CMD_NONE,        NON_IO_REQ,
  705.         sizeof(ARG2), 0},                        /* REQ_UG_POINT */
  706.    { CMD_NONE,        NON_IO_REQ,
  707.         sizeof(ARG2), 0},                        /* REQ_UG_BOX */
  708.    { CMD_NONE,        NON_IO_REQ,
  709.         sizeof(ARG2), 0},                        /* REQ_UG_BOXF */
  710.    { CMD_NONE,        NON_IO_REQ,
  711.         sizeof(ARG4), 0},                        /* REQ_UG_PUTS */
  712.    { CMD_NONE,        NON_IO_REQ,
  713.         sizeof(ARG3), 0},                        /* REQ_UG_WINDEL */
  714.    { CMD_NONE,        NON_IO_REQ,
  715.         sizeof(ARG3), 0},                        /* REQ_UG_WINCLR */
  716.    { CMD_NONE,        NON_IO_REQ,
  717.         0, sizeof(AGPARMS)},                     /* REQ_UG_GPARMS */
  718.    { CMD_NONE,        NON_IO_REQ,
  719.         0, sizeof(AMOUSE)},                      /* REQ_UG_MOUSE 0x30 */
  720.    { CMD_NONE,        NON_IO_REQ,
  721.         sizeof(ARG3), 0},                        /* REQ_UG_RDPOINT */
  722.    { CMD_NONE,        NON_IO_REQ,
  723.         0, sizeof(ARDNETINF)},                  /* REQ_UG_RDNETINF */
  724.    { CMD_NONE,        NON_IO_REQ,
  725.         0, sizeof(ARGMSG)},                     /* REQ_UG_GETINSTRT */
  726.    { CMD_NONE,        NON_IO_REQ,
  727.         sizeof(ARGN), 0},                       /* REQ_UG_LOADNET */
  728.    { CMD_NONE,        NON_IO_REQ,
  729.         sizeof(ARGLR), 0},                      /* REQ_UG_LEARN */
  730.    { CMD_NONE,        NON_IO_REQ,
  731.         sizeof(ARGLR), 0},                      /* REQ_UG_RECALL */
  732.    { CMD_NONE,        NON_IO_REQ,
  733.         sizeof(ARGMSG), sizeof(ARGMSG)},        /* REQ_UG_MSGIO */
  734.    { CMD_NONE,        NON_IO_REQ,
  735.         0, sizeof(PRSTATS_BUF)},                /* REQ_UG_WTSTATS */
  736.    { CMD_NONE,        NON_IO_REQ,
  737.         sizeof(ARGPRUNE),  0},                  /* REQ_UG_PRUNE */
  738.    { CMD_NONE,        NON_IO_REQ,
  739.         sizeof(ARGBLIT), 0},                    /* REQ_UG_BLIT */
  740.    { CMD_NONE,        NON_IO_REQ,
  741.         sizeof(ARGPBLIT), 0},                   /* REQ_UG_PBLIT */
  742.    { CMD_NONE,        NON_IO_REQ,
  743.         sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_PEIO */
  744.    { CMD_NONE,        NON_IO_REQ,
  745.         sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_SCHDIO */
  746.    { CMD_NONE,        NON_IO_REQ,
  747.         sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_CTRIO 0x3D */
  748.    { CMD_NONE,        NON_IO_REQ,
  749.         sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_IOPARMS */
  750.    { CMD_NONE,        NON_IO_REQ,
  751.         sizeof(ARGCNIO), sizeof(ARGCNIO)},      /* REQ_UG_CNIO */
  752.    { CMD_NONE,        NON_IO_REQ,
  753.         sizeof(ARGLR), 0},                      /* REQ_UG_TEST */
  754.    { CMD_NONE,        NON_IO_REQ,
  755.         sizeof(ARGFILEIO), 0},                  /* REQ_UG_FILEIO */
  756.    { CMD_NONE,        NON_IO_REQ,
  757.         0, 0},                                  /* REQ_UG_NETINIT */
  758.    { CMD_NONE,        NON_IO_REQ,
  759.         sizeof(ARG2), 0},                       /* REQ_UG_CIRCLE */
  760.    { CMD_NONE,        NON_IO_REQ,
  761.         sizeof(ARGPSCIO), sizeof(ARGPSCIO)},    /* REQ_UG_LYRIO */
  762.    { CMD_NONE,        NON_IO_REQ,
  763.         sizeof(ARDFILEINF),sizeof(ARDFILEINF)},  /* REQ_UG_RDFILEINF */
  764.    { CMD_NONE,        NON_IO_REQ,
  765.         sizeof(ASAVEBEST), 0},                  /* REQ_UG_SAVEBEST */
  766.    { CMD_NONE,        NON_IO_REQ,
  767.         sizeof(ARANDSEED), 0},                   /* REQ_UG_RANDSEED */
  768.    { CMD_NONE,        NON_IO_REQ,
  769.         sizeof(ACCLRN), 0}                     /* REQ_UG_CCLRN */
  770. };
  771.  
  772. #endif /* else of !defined(UIO_SERVER) || !defined(EMULATING) */
  773.  
  774. #else /* HOME_FOR_TRANSFER_DATA */
  775.  
  776. GLOBALREF DATA_TRANSFER_AREA_T *Data_transfer_ptr;
  777. GLOBALREF REQUEST_DATA_T       command_data_table[];
  778.  
  779. GLOBALREF NINT                 Process_id;
  780.  
  781.  
  782. #endif /* HOME_FOR_TRANSFER_DATA */
  783.  
  784. /* */
  785. /* Host UIO errors */
  786. #define OUTPUT_OVERFLOW             0x81
  787. #define INPUT_OVERFLOW              0x82
  788. #define EXPECTED_INPUT_OVERFLOW     0x83
  789. #define INPUT_CORRUPTION            0x84
  790. #define UNKNOWN_REQUEST             0x85
  791. #define PROCESS_CREATION_FAILED     0x86
  792.  
  793. /* Server UIO errors */
  794. #define UNKNOWN_COMMAND             0x91
  795.  
  796. #endif /* ifndef UIO_TRAN_H */
  797.